package com.smedi.ismedi.organization.core.application.query;

import com.smedi.ismedi.organization.api.dto.response.ProjectOrganizationResponse;
import com.smedi.ismedi.organization.core.application.command.ProjectOrganizationListQueryCommand;
import com.smedi.ismedi.organization.core.application.query.vo.ProjectOrganizationVo;
import com.smedi.ismedi.organization.core.domain.aggregatemodel.model.ProjectOrganizationModel;

import java.util.List;
import java.util.Map;

public interface ProjectOrganizationQueryService {
    List<ProjectOrganizationVo> getProjectOrganizationTree(Long projectId);

    List<ProjectOrganizationVo> getAllProjectOrganizationList();

    ProjectOrganizationVo getProjectOrganizationView(Long projectOrganizationId);

    List<Long> getProjectOrganizationChildrenIdList(Long projectOrganizationId);

    Map<Long, String> getProjectOrganizationChildrenMap(Long projectOrganizationId);

    List<ProjectOrganizationVo> getProjectOrganizationByProjectOrganizationIds(List<Long> projectOrganizationIds);

    List<ProjectOrganizationVo> queryProjectOrganizationListByFullName(String fullName, Long projectId);

    List<ProjectOrganizationVo> queryProjectOrganizationListByFullNameList(List<String> fullNameList);

    List<ProjectOrganizationVo> queryProjectOrganizationListByProjectId(Long projectId);

    List<Long> getParentProjectOrganizationIdsByProjectOrganizationId(Long projectOrganizationId);

    List<ProjectOrganizationVo> getProjectOrganizationByProjectIdAndSpecialTypes(Long projectId, List<String> specialTypes);

    List<ProjectOrganizationVo> queryProjectOrganizationsByProjectId(Long projectId);

    List<ProjectOrganizationModel> getProjectOrganizationList(ProjectOrganizationListQueryCommand projectOrganizationListQueryCommand);
}
